package tp2;
	import java.io.BufferedReader;
	import java.io.File;
	import java.io.FileReader;
	import java.io.FileWriter;
	import java.io.IOException;

public class Parser {

		public static void main(String[] args) 
		{
			
			File fileIn = new File("Tp2Ej3.in");
			File fileOut = new File("Tp2Ej3.out");

			PatriciaTrie p = new PatriciaTrie();
			FileReader fr = null;
			FileWriter fw = null;
			try {
				fr = new FileReader(fileIn);
				BufferedReader in = new BufferedReader(fr);

				fw = new FileWriter(fileOut);
			
				levantoDatos(in,fw,p);

			} catch (IOException e) {
				System.out.println("NO SE PUDO LEER EL ARCHIVO");
				e.printStackTrace();
			} finally {
				try {
					if ( fr != null )
						fr.close();
				} catch (IOException e) {
					System.out.println("Error al cerrar el archivo de entrada");
				}

				try {
					if ( fw != null )
						fw.close();
				} catch (IOException e) {
					System.out.println("Error al cerrar el archivo de salida");
				}
			}
		}
		
		private static void levantoDatos(BufferedReader br, FileWriter fw,PatriciaTrie p) throws NumberFormatException,
		IOException {
		
			// Leo la 1er linea, que contiene la cantidad de nodos.
			String cantInstrucciones = new String();

			cantInstrucciones =  br.readLine();
		
			if ( cantInstrucciones==null || cantInstrucciones.equals("0"))
				return;
	
			Integer contador = new Integer(0);
			contador = contador.valueOf(cantInstrucciones);
			StringBuffer str = new StringBuffer();
			for (int i = 0; i < contador.intValue(); i++) 
			{
																// tengo en temp la instruccion y el valor
				String[] temp = new String[2];
				temp = br.readLine().trim().split("\\s+");

				if(temp[0].equals("agregar"))
					p.definir(temp[1],temp[1]);
				if(temp[0].equals("sacar"))
					p.borrar(temp[1]);
				if(temp[0].equals("pertenece")){
					if(p.estaDefinido(temp[1]))
							str.append(1) ;
						else 
							str.append(0);
					
					str.append(" ");
				}
				if(temp[0].equals("cardinal")){
					str.append(p.cantPalabras());
					str.append(" ");
				}
			}
			fw.write(str.toString());
			fw.flush();
		}

}
